import subprocess
import os

# =========================   提取视频中的音频  ================================
def extract_audio_to_mp3(video_path, audio_path):
    """
    使用FFmpeg从视频中提取音频并转换为MP3格式
    
    Args:
        video_path (str): 视频文件路径
        audio_path (str): 输出音频文件路径
    """
    try:
        # FFmpeg命令行参数
        command = [
            r'D:\Program Files\ffmpeg-7.0.2-essentials_build\bin\ffmpeg.exe',
            '-i', video_path,           # 输入视频文件
            '-vn',                      # 禁用视频流
            '-ar', '44100',             # 设置音频采样率为44100Hz
            '-ac', '2',                 # 设置音频通道数为2（立体声）
            '-ab', '192k',              # 设置音频比特率为192kbps
            '-f', 'mp3',                # 设置输出格式为MP3
            audio_path                  # 输出音频文件路径
        ]
        
        # 执行FFmpeg命令
        result = subprocess.run(command, capture_output=True, text=True)
        
        # 检查执行结果
        if result.returncode == 0:
            print(f"音频提取成功: {audio_path}")
        else:
            print(f"音频提取失败: {result.stderr}")
            
    except Exception as e:
        print(f"提取音频时发生错误: {e}")


def main():
    # 示例用法
    # 请根据实际需要修改以下路径
    video_file = r"C:\Users\黄威健\Videos\Captures\运输管理系统 .mp4"      # 输入视频文件路径
    audio_file = r"C:\Users\黄威健\Videos\Captures\运输管理系统 .mp3"   # 输出音频文件路径
    
    # 检查输入视频文件是否存在
    if not os.path.exists(video_file):
        print(f"视频文件不存在: {video_file}")
        return
    
    # 创建输出目录（如果不存在）
    output_dir = os.path.dirname(audio_file)
    if output_dir and not os.path.exists(output_dir):
        os.makedirs(output_dir)
    
    # 提取音频
    extract_audio_to_mp3(video_file, audio_file)


if __name__ == "__main__":
    main()